// Moosync
// Copyright (C) 2024, 2025  Moosync <support@moosync.app>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize)]
pub enum Type {
    Image = 0,
    Video = 1,
    VideoLooping = 2,
    VideoLoopingRandom = 3,
    Gif = 4,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct CanvazArtist {
    pub uri: String,
    pub name: String,
    pub avatar: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct Canvaz {
    pub id: String,
    pub url: String,
    pub file_id: String,
    pub type_: Type,
    pub entity_uri: String,
    pub artist: CanvazArtist,
    pub explicit: bool,
    pub uploaded_by: String,
    pub etag: String,
    pub canvas_uri: String,
    pub storylines_id: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct CanvazResponse {
    pub canvases: Vec<Canvaz>,
    pub ttl_in_seconds: i64,
}
